﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2022 北京超维景生物科技有限公司 保留所有权利。
 * 
 * 创建者：huangyang
 * 电子邮箱：huangyang@tvscope.cn
 * 创建时间：2023/2/20 18:23:22
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImageK.Util
{
    public static class GuiExtensions
    {
        private const double FACTOR = 0.7;
        public static Color Brighter(this Color color)
        {
            int r = color.R ;
            int g = color.G;
            int b = color.B;
            int alpha = color.A;

            /* From 2D group:
             * 1. black.brighter() should return grey
             * 2. applying brighter to blue will always return blue, brighter
             * 3. non pure color (non zero rgb) will eventually return white
             */
            int i = (int)(1.0 / (1.0 - FACTOR));
            if (r == 0 && g == 0 && b == 0)
            {
                return Color.FromArgb(alpha, i, i, i);
            }
            if (r > 0 && r < i) r = i;
            if (g > 0 && g < i) g = i;
            if (b > 0 && b < i) b = i;

            return Color.FromArgb(alpha, Math.Min((int)(r / FACTOR), 255),
                Math.Min((int)(g / FACTOR), 255),
                Math.Min((int)(b / FACTOR), 255)
                );
        }


        public static Font deriveFont(this Font font, float size)
        {
            return new Font(font.Name, size, font.Style);
        }
    }
}
